package leetcodev1.数组;

public class LeetCode66 {

    public int[] plusOne1(int[] digits) {
        int i = digits.length - 1;
        boolean needUp = false;
        while (i >= 0) {
            digits[i] = digits[i] + 1;
            if (digits[i] < 10) {
                needUp = false;
                break;
            }
            needUp = true;
            digits[i] -= 10;
            i--;
        }

        if (needUp) {
            int[] ret = new int[digits.length + 1];
            ret[0] = 1;
            for (int j = 0; j < digits.length; j++) {
                ret[j + 1] = digits[j];
            }
            return ret;
        }

        return digits;
    }

    //找到不为9的加1
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        for (int i = n - 1; i >= 0; --i) {
            //第一个不为9的数
            if (digits[i] != 9) {
                ++digits[i];
                //将所有进位的数都置为0
                for (int j = i + 1; j < n; ++j) {
                    digits[j] = 0;
                }
                return digits;
            }
        }

        // digits 中所有的元素均为 9
        int[] ans = new int[n + 1];
        ans[0] = 1;
        return ans;
    }
}
